-- bufferline 插件：更好地管理 buffer
-- 将当前所有的 buffer 以类似于浏览器标签页的方式呈现在页面最上方
-- 提供了一系列操作 buffer 的命令
return {
    "akinsho/bufferline.nvim",
    dependencies = {
        -- 显示title中的图标
        "nvim-tree/nvim-web-devicons",
    },
    -- opts = {},
    -- 显示调试信息概览
opts = {
    options = {
-- 使用nvim-lsp所提供的诊断信息
        diagnostics = "nvim_lsp",
        -- 该函数返回的字符串会添加bufferline的右侧
        -- diagnostics_dict是具体的诊断信息表, 例如：{error=1,warning =2}
        diagnostics_indicator = function (_, _, diagnostics_dict, _)
            local indicator = " "
            for level, number in pairs(diagnostics_dict) do
                local symbol
                if level == "error" then
                    symbol = " "
                elseif level == "warning" then
                    symbol = " "
                else
                    symbol = " "
                end
                indicator = indicator .. number .. symbol
            end
            return indicator
        end
    }
},
    
    keys = {
        -- 切换到左侧的 buffer
        { "<leader>bh", ":BufferLineCyclePrev<CR>", silent = true },
        -- 切换到右侧的 buffer
        { "<leader>bl", ":BufferLineCycleNext<CR>", silent = true },
        -- 关闭当前 buffer（这里的 bdelete 是 neovim 自带的命令）
        { "<leader>bd", ":bdelete<CR>", silent = true },
        -- 关闭其他 buffer
        { "<leader>bo", ":BufferLineCloseOthers<CR>", silent = true },
        -- 选中特定 buffer（按下后，buffer 旁边会出现字母，按下对应字母跳转到该 buffer）
        { "<leader>bp", ":BufferLinePick<CR>", silent = true },
        -- 关闭特定 buffer
        { "<leader>bc", ":BufferLinePickClose<CR>", silent = true },
    },
    -- 关闭懒加载机制
    lazy = false,
}
